ВГОРУ

SQL INSERT INTO SELECT

INSERT INTO SELECT Опис

Оператор SQL INSERT INTO SELECT копіює дані з однієї таблиці та вставляє їх в іншу таблицю.

Оператор INSERT INTO SELECT вимагає, щоб типи даних у вихідній і цільовій таблицях збігалися.


Існуючі записи в цільовій таблиці залишаються та не впливають на процес копіювання.

INSERT INTO SELECT Синтаксис

Копіює всі стовпці з однієї таблиці в іншу:

INSERT INTO table2
SELECT * 
FROM table1
WHERE condition

Копіює лише деякі стовпці з однієї таблиці в іншу:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition

Демонстраційна база даних

У цьому довіднику ми будемо використовувати відомий приклад бази даних "Northwind".

Нижче наведено вибірку із таблиці "Customers" ("Клієнти"):

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

Та вибірку з таблиці "Suppliers" ("Постачальники"):

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

INSERT INTO SELECT Приклади

Наступний SQL-запит копіює "Suppliers" ("Постачальники") в "Customers" ("Клієнти") (стовпці, які не заповнені даними, міститимуть NULL):

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers

Ще один варіант SQL-запиту копіює дані з таблиці "Постачальники" в "Клієнти" (заповнює усі стовпці):

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country 
FROM Suppliers

Наступна інструкція SQL копіює лише німецьких постачальників у таблицю "Клієнти":

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers
WHERE Country = 'Germany'